package com.jinglephone.sdk;

import android.content.Context;

/**
 * IJingLePhone SIP接口定义
 *
 * @author mos
 * @date 2016.05.27
 */
public interface IJingLePhone {
    /**
     * 初始化函数
     *
     * @param context 上下文(传入application context)
     * @note 此函数执行底层初始化，请在Application中调用
     */
    void init(Context context);

    /**
     * 注册
     *
     * @param param     注册参数
     * @param callback  sip回调
     * @param options   sip选项
     * @note 客户端只需调用一次，sdk内部会反复注册，直到成功
     */
    void register(RegisterParam param, ISipCallBack callback, SipOption options);

    /**
     * 注销
     */
    void unregister();

    /**
     * 拨打电话
     *
     * @param number  拨打的电话号码
     * @return 错误码
     */
    int makeCall(String number);

    /**
     * 接听电话
     *
     * @param number 接听的电话号码
     * @return 错误码
     * @note 多个呼叫的时候，需选择接听的号码
     */
    int answer(String number);

    /**
     * 挂断电话
     *
     * @param number 挂断的号码
     * @return 错误码
     * @note 多个呼叫的时候，需选择挂断的号码
     */
    int hangup(String number);

    /**
     * 呼叫等待
     *
     * @param number 等待的号码
     * @return 错误码
     * @note 多个呼叫的时候，需选择等待的号码
     */
    int hold(String number);

    /**
     * 取消呼叫等待
     *
     * @param number 取消等待的号码
     * @return 错误码
     * @note 多个呼叫的时候，需选择取消等待的号码
     */
    int unhold(String number);

    /**
     * 回音消除状态
     *
     * @param echoMode  true -- 启用回音消除  false -- 禁止回音消除
     */
    void echoCancel(boolean echoMode);
}
